var isDebug = false;


/**
 * 页面默认大小调整
 */
var Page = (function() {
    var pageSize=30;//定义了常量
    var pageList=[20, 30, 50, 100];//定义了常量
    var Page = {};
    //定义了静态方法 获取常量的方法
    Page.getPageSize=function() {
        return pageSize;
    };
    Page.getPageList=function() {
        return pageList;
    };
    return Page;
})();

var pageParam = {
	pageNo: 1,
	pageSize: Page.getPageSize(),
	isStat: false,
	orderBy: "id",
	sortBy: "DESC",
	condition: {}
};

//提示成功消息
function showSuccessMsg(msg) {
    layer.msg(msg, {icon:1, time:3000});
}

//提示失败消息
function showFailedMsg(msg) {
    layer.msg(msg, {icon:5, time:3000});
}

//提示警告消息
function showWarnMsg(msg) {
    layer.msg(msg, {icon:7, time:3000});
}

//打开一个HTML窗口
function openHtml(title, width, height, content, openedFun, saveFun) {
    var maxWidth = window.innerWidth-20;
    var maxHeight = window.innerHeight-20;
    width = width > maxWidth ? maxWidth : width;
    height = height > maxHeight ? maxHeight : height;
    var lay = layer.open({
        type: 1,//Layer提供了5种层类型（0-信息框，默认；1-页面层；2-iframe层；3-加载层；4-tips层）
        title: title,//标题
        shadeClose: false,
        maxmin: false,
        shade: 0.3,//遮罩透明度
        area: [width +"px", height +"px"],
        content: content,//'传入任意的文本或html'，这里content是一个普通的String 比如："<div>哈哈</div>"
        success: openedFun ? openedFun : function (index, layero) {},
        btn: ["保存"],
        btn1: saveFun ? saveFun : function (index, layero) {},
    });
    //重新给指定层设定width、top等 因为它们的小屏幕电脑的弹出层会出现滚动条，所以才用这个方法给加一个overflow: 'visible',属性
    layer.style(lay, {
        overflow: "visible"
    });
}

//打开一个IFRAME窗口
function openIframe(title, width, height, content, openedFun, saveFun) {
	var maxWidth = window.innerWidth-20;
	var maxHeight = window.innerHeight-20;
    width = width > maxWidth ? maxWidth : width;
    height = height > maxHeight ? maxHeight : height;
    var lay = layer.open({
        type: 2,
        title: title,
        shadeClose: false,
        maxmin: false,
        shade: 0.3,
        area: [width +"px", height +"px"],
        content: content,//传入一个链接地址 比如：http://www.baidu.com
        success: openedFun ? openedFun : function (index, layero) {},
        btn: ["保存"],
        btn1: saveFun ? saveFun : function (index, layero) {}
    });
    //重新给指定层设定width、top等 因为它们的小屏幕电脑的弹出层会出现滚动条，所以才用这个方法给加一个overflow: 'visible',属性
    layer.style(lay, {
        overflow: "visible"
    });
}


/**
 * 显示进度条
 *
 * @return
 */
function loadProgress(msg) {
    if (!msg) {
        msg = "数据查询中...";
    }
    $.messager.progress({
        text : msg
    });
}

/**
 * 隐藏 进度条
 * @return
 */
function hiddenProgress() {
    $.messager.progress('close');
}

var timeLength = function(param) {
	param += "";
	return param.length === 2 ? param : "0" + param;
};

var timeDay = {
	"0" : "星期天",
	"1" : "星期一",
	"2" : "星期二",
	"3" : "星期三",
	"4" : "星期四",
	"5" : "星期五",
	"6" : "星期六"
};

//获取表单数据
function getFormData(formId) {
    var formData = {};
    var t = $('#'+ formId).serializeArray();
    $.each(t, function() {
        formData[this.name] = this.value;
    });
    return formData;
}

//格式化文件大小
function getFormetFileSize(size) {
	var fileSizeString = "";
	if (size < 1024) {
		fileSizeString = size.toFixed(2) + "B";
	} else if (size < 1048576) {
		fileSizeString = ( size / 1024).toFixed(2) + "K";
	} else if (size < 1073741824) {
		fileSizeString = ( size / 1048576).toFixed(2) + "M";
	} else {
		fileSizeString = ( size / 1073741824).toFixed(2) + "G";
	}
	return fileSizeString;
}

// 将时间戳改成年月日时分秒·
var timeFormat = function(ms, showDay) {
	if (typeof ms == 'string') {
		ms = parseInt(ms);
	}
	var timeLocal = new Date(ms);
	var year = timeLocal.getYear() + 1900;
	var month = timeLength(timeLocal.getMonth() + 1);
	var day = timeLength(timeLocal.getDate());
	var hour = timeLength(timeLocal.getHours());
	var minutes = timeLength(timeLocal.getMinutes());
	var second = timeLength(timeLocal.getSeconds());
	var weekDay = timeDay[timeLocal.getDay()];
	if (showDay == null) {
		var timeNew = year + "-" + month + "-" + day;
	} else if (!showDay) {
		var timeNew = year + "-" + month + "-" + day + " " + hour + ":"
				+ minutes + ":" + second;
	} else {
		var timeNew = year + "-" + month + "-" + day + " " + hour + ":"
				+ minutes + ":" + second;
		//var timeNew = year + "-" + month + "-" + day + " " + hour + ":"
		//		+ minutes + ":" + second + " " + weekDay;
	}
	return timeNew;
};

// 将时间戳改成年月日时分秒·
var dates = function(format,ms) {
	if ( typeof ms == 'string') {
		ms = parseInt(ms);
	}
	var timeLocal = new Date(ms);
	var year = timeLocal.getFullYear();
	var month = timeLength(timeLocal.getMonth() + 1);
	var day = timeLength(timeLocal.getDate());
	var hour = timeLength(timeLocal.getHours());
	var minutes = timeLength(timeLocal.getMinutes());
	var second = timeLength(timeLocal.getSeconds());
	return format.replace("Y",year).replace("m",month).replace("d",day).replace("H",hour).replace("i",minutes).replace("s",second);
};

//判断数字或字符串是否为空
function empty(obj){
	if(isNaN(obj) == false){//数字
		return obj <= 0 ? true : false;
	}else{
		return obj == "" || obj == undefined ? true : false;
	}
}

//获取项目根地址
var getRootPath = function() {
	var curWwwPath = window.document.location.href;
	var pathName = window.document.location.pathname;
	if (curWwwPath.indexOf("//www.") != -1) {
		return curWwwPath.substring(0, curWwwPath.lastIndexOf('/'));
	}
	var pos = curWwwPath.indexOf(pathName);
	var localhostPath = curWwwPath.substring(0, pos);
	var projectName=pathName.substring(0, pathName.substr(1).indexOf('/')+1);
	return(localhostPath + projectName);
};

//统一的get请求
var ajaxGetFun = function(url, param, successFun, errorFun, str, async) {
	var loadingIndex = null;
	if (async == undefined)
		async = true;
	$.ajax({
		url: url,
		type: "get",
		data: param || {},
		dataType: "json",
		async: async,
		xhrFields: {
			withCredentials : true
		},
		beforeSend:function(XMLHttpRequest) {
			loadingIndex = layer.load(1, {
				content: '',
				shade: [0.4, '#393D49'],
				success: function(layero) {
					layero.css('padding-left', '30px');
					layero.find('.layui-layer-content').css({
						'padding-top': '40px',
						'width': '70px',
						'color':'white',
						'background-position-x': '16px'
					});
				}
			})
		},
		complete: function(XMLHttpRequest, textStatus) {
			layer.close(loadingIndex);
		},
		success: function(data) {
			if (data.code == "0006666") {
				parent.parent.location.href = "login.html";
			} else if (data.code != "0000000") {
				if (isDebug) {
					console.log(str + "返回失败", data);
				}
				if (errorFun) {
					errorFun(data.bizData);
				} else {
					showFailedMsg(data.msg);
				}
			} else {
				if (isDebug) {
					console.log(str + "返回成功", data);
				}
				if (successFun) {
					successFun(data.bizData);
				}
			}
		},
		error : function(data) {
			if (isDebug) {
				console.log(str + "返回失败", data);
			}
			if (errorFun) {
				errorFun(data);
			} else {
				layer.msg("系统异常",{icon: 5,time:2000});
			}
		}
	})
};

//统一的post请求
var ajaxPostFun = function(url, param, successFun, errorFun, str, async) {
    var loadingIndex = null;
	if (async == undefined)
        async = true;
	$.ajax({
		url: url,
		type: "post",
        data: param || {},
		dataType: "json",
		async: async,
		xhrFields: {
			withCredentials : true
		},
        beforeSend:function(XMLHttpRequest) {
            loadingIndex = layer.load(1, {
                content: '',
                shade: [0.4, '#393D49'],
                success: function(layero) {
                    layero.css('padding-left', '30px');
                    layero.find('.layui-layer-content').css({
                        'padding-top': '40px',
                        'width': '70px',
                        'color':'white',
                        'background-position-x': '16px'
                    });
                }
            })
        },
        complete: function(XMLHttpRequest, textStatus) {
            layer.close(loadingIndex);
        },
		success: function(data) {
        	if (data.code == "0006666") {
                parent.parent.location.href = "login.html";
            } else if (data.code != "0000000") {
                if (isDebug) {
                    console.log(str + "返回失败", data);
                }
				if (errorFun) {
					errorFun(data.bizData);
				} else {
				    showFailedMsg(data.msg);
				}
			} else {
                if (isDebug) {
                    console.log(str + "返回成功", data);
                }
                if (successFun) {
                    successFun(data.bizData);
                }
			}
		},
		error: function(data) {
		    if (isDebug) {
                console.log(str + "返回失败", data);
            }
			if (errorFun) {
				errorFun(data);
			} else {
			    showFailedMsg("系统异常");
			}
		}
	})
};

//统一的upload请求
var ajaxUploadFun = function(url, param, successFun, errorFun, str, async) {
    var loadingIndex = null;
	if (async == undefined)
        async = true;
	$.ajax({
		url: url,
		type: "post",
        data: param || {},
		dataType: "json",
		async: async,
		processData : false,//使数据不做处理
		contentType : false,//不要设置Content-Type请求头
		xhrFields: {
			withCredentials : true
		},
        beforeSend:function(XMLHttpRequest) {
            loadingIndex = layer.load(1, {
                content: '',
                shade: [0.4, '#393D49'],
                success: function(layero) {
                    layero.css('padding-left', '30px');
                    layero.find('.layui-layer-content').css({
                        'padding-top': '40px',
                        'width': '70px',
                        'color':'white',
                        'background-position-x': '16px'
                    });
                }
            })
        },
        complete: function(XMLHttpRequest, textStatus) {
            layer.close(loadingIndex);
        },
		success: function(data) {
        	if (data.code == "0006666") {
                parent.parent.location.href = "login.html";
            } else if (data.code != "0000000") {
                if (isDebug) {
                    console.log(str + "返回失败", data);
                }
				if (errorFun) {
					errorFun(data.bizData);
				} else {
				    showFailedMsg(data.msg);
				}
			} else {
                if (isDebug) {
                    console.log(str + "返回成功", data);
                }
                if (successFun) {
                    successFun(data.bizData);
                }
			}
		},
		error: function(data) {
		    if (isDebug) {
                console.log(str + "返回失败", data);
            }
			if (errorFun) {
				errorFun(data);
			} else {
			    showFailedMsg("系统异常");
			}
		}
	})
};

/*
 * ajaxSubmit方法第一个参数，是要提交的form， 第二个参数是ajax调用成功后的处理函数。
 * 将form的action传递给ajax的url，form的method传递给ajax的type， 再将格式化后的表单内容传递给data。
 * getFormJson方法将form的元素转化为json格式键值对。
 * 形如：{name:'aaa',password:'tttt'}，注意将同名的放在一个数组里。
 */

// 将form转为AJAX提交
function ajaxSubmit(form, fn) {
	var dataPara = getFormJson(form);
	$.ajax({
		url : form.action,
		type : form.method,
		data : dataPara,
		dataType : "json",
		async: false,
		success : fn
	});
}

// 将form中的值转换为键值对。
function getFormJson(form) {
	var o = {};
	var a = $(form).serializeArray();
	$.each(a, function() {
		if (this.name == "password") {
			if(!empty(this.value)){
				this.value = $.md5(this.value);
			}
		}
		if (o[this.name] !== undefined) {
			if (!o[this.name].push) {
				o[this.name] = [ o[this.name] ];
			}
			o[this.name].push(this.value.trim() || '');
		} else {
			o[this.name] = this.value.trim() || '';
		}
	});
	return o;
}

// js中String添加replaceAll 方法
String.prototype.replaceAll = function(a, b) {
	var reg = new RegExp(a, "g");
	return this.replace(reg, b);
};

/**
 * 获取页面传递get参数
 * @param name 查找字符串
 * @returns
 */
function getQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
	var r = window.location.search.substr(1).match(reg);
	if (r != null) return unescape(r[2]);
	return null;
}

(function($){
	$.getUrlParam = function(name){
		var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
		var r = window.location.search.substr(1).match(reg);
		if (r!=null) return unescape(r[2]); return null;
	};
})(jQuery);

/**
 * 判断变量是否空值undefined, null, '', false, 0, [], {} 均返回true，否则返回false
 * @param v
 * @returns {Boolean}
 */
function empty(v){
	switch (typeof v){
		case 'undefined' : return true;
		case 'string' : if(v.length == 0) return true; break;
		case 'boolean' : if(!v) return true; break;
		case 'number' : if(0 === v) return true; break;
		case 'object' :
			if(null === v) return true;
			if(undefined !== v.length && v.length==0) return true;
			for(var k in v){return false;} return true;
			break;
	}
	return false;
}

//文本框只能输入金额格式数字
function onlyNumber(obj){
	//得到第一个字符是否为负号
	var t = obj.value.charAt(0);
	//先把非数字的都替换掉，除了数字和.
	obj.value = obj.value.replace(/[^\d\.]/g,'');
	//必须保证第一个为数字而不是.
	obj.value = obj.value.replace(/^\./g,'');
	//保证只有出现一个.而没有多个.
	obj.value = obj.value.replace(/\.{2,}/g,'.');
	//保证.只出现一次，而不能出现两次以上
	obj.value = obj.value.replace('.','$#$').replace(/\./g,'').replace('$#$','.');//只能输入两位小数
	obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');
	//如果第一位是负号，则允许添加
	if(t == '-'){
		return;
	}
}

//工具栏按钮启用禁用状态
function toolBarBtnDisabledById(btnStatusBooleanList, id) {
	if (!id) {
        id = "buttonInfo";
	}
	for (var i = 0; i < btnStatusBooleanList.length; i++) {
		$("#"+id).find('button').eq(i).linkbutton(btnStatusBooleanList[i]?"disable":"enable");
	}
}

//表格选中条目列数据拼接
function mergedRowCell(selectRow, attrName) {
	var temp = "";
	if (attrName == "aaaa") {
		for(var i=0;i<selectRow.length;i++){
			temp += selectRow[i].guid + ",";
		}
	} else {
		for(var i=0;i<selectRow.length;i++){
			temp += selectRow[i][attrName] + ",";
		}
	}
	if (temp != "") {
        temp = temp.substr(0,temp.length-1);
    }
	return temp;
}

//对象的浅copy(未包含对象的对象copy)
function copyObj(obj) {
	var newobj = {};
	for (var attr in obj){
		newobj[attr] = obj[attr];
	}
	return newobj;
}

/**
 * jQuery MD5 hash algorithm function
 * 
 * <code>
 * 		Calculate the md5 hash of a String 
 * 		String $.md5 ( String str )
 * 	</code>
 * 
 * Calculates the MD5 hash of str using the Â» RSA Data Security, Inc. MD5
 * Message-Digest Algorithm, and returns that hash. MD5 (Message-Digest
 * algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash
 * value. MD5 has been employed in a wide variety of security applications, and
 * is also commonly used to check the integrity of data. The generated hash is
 * also non-reversable. Data cannot be retrieved from the message digest, the
 * digest uniquely identifies the data. MD5 was developed by Professor Ronald L.
 * Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster
 * implementation than SHA-1. This script is used to process a variable length
 * message into a fixed-length output of 128 bits using the MD5 algorithm. It is
 * fully compatible with UTF-8 encoding. It is very useful when u want to
 * transfer encrypted passwords over the internet. If you plan using UTF-8
 * encoding in your project don't forget to set the page encoding to UTF-8
 * (Content-Type meta tag). This function orginally get from the WebToolkit and
 * rewrite for using as the jQuery plugin.
 * 
 * Example Code <code>
 * 			$.md5("I'm Persian."); 
 * 		</code> Result <code>
 * 			"b8c901d0f02223f9761016cfff9d68df"
 * 		</code>
 * 
 * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
 * @link http://www.semnanweb.com/jquery-plugin/md5.html
 * @see http://www.webtoolkit.info/
 * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
 * @param {jQuery}
 *            {md5:function(string))
 * @return string
 */

(function($) {

	var rotateLeft = function(lValue, iShiftBits) {
		return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
	};

	var addUnsigned = function(lX, lY) {
		var lX4, lY4, lX8, lY8, lResult;
		lX8 = (lX & 0x80000000);
		lY8 = (lY & 0x80000000);
		lX4 = (lX & 0x40000000);
		lY4 = (lY & 0x40000000);
		lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
		if (lX4 & lY4)
			return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
		if (lX4 | lY4) {
			if (lResult & 0x40000000)
				return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
			else
				return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
		} else {
			return (lResult ^ lX8 ^ lY8);
		}
	};

	var F = function(x, y, z) {
		return (x & y) | ((~x) & z);
	};

	var G = function(x, y, z) {
		return (x & z) | (y & (~z));
	};

	var H = function(x, y, z) {
		return (x ^ y ^ z);
	};

	var I = function(x, y, z) {
		return (y ^ (x | (~z)));
	};

	var FF = function(a, b, c, d, x, s, ac) {
		a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);
	};

	var GG = function(a, b, c, d, x, s, ac) {
		a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);
	};

	var HH = function(a, b, c, d, x, s, ac) {
		a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);
	};

	var II = function(a, b, c, d, x, s, ac) {
		a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);
	};

	var convertToWordArray = function(string) {
		var lWordCount;
		var lMessageLength = string.length;
		var lNumberOfWordsTempOne = lMessageLength + 8;
		var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
		var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
		var lWordArray = Array(lNumberOfWords - 1);
		var lBytePosition = 0;
		var lByteCount = 0;
		while (lByteCount < lMessageLength) {
			lWordCount = (lByteCount - (lByteCount % 4)) / 4;
			lBytePosition = (lByteCount % 4) * 8;
			lWordArray[lWordCount] = (lWordArray[lWordCount] | (string
					.charCodeAt(lByteCount) << lBytePosition));
			lByteCount++;
		}
		lWordCount = (lByteCount - (lByteCount % 4)) / 4;
		lBytePosition = (lByteCount % 4) * 8;
		lWordArray[lWordCount] = lWordArray[lWordCount]
				| (0x80 << lBytePosition);
		lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
		lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
		return lWordArray;
	};

	var wordToHex = function(lValue) {
		var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
		for (lCount = 0; lCount <= 3; lCount++) {
			lByte = (lValue >>> (lCount * 8)) & 255;
			WordToHexValueTemp = "0" + lByte.toString(16);
			WordToHexValue = WordToHexValue
					+ WordToHexValueTemp.substr(WordToHexValueTemp.length - 2,
							2);
		}
		return WordToHexValue;
	};

	var uTF8Encode = function(string) {
		string = string.replace(/\x0d\x0a/g, "\x0a");
		var output = "";
		for ( var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				output += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				output += String.fromCharCode((c >> 6) | 192);
				output += String.fromCharCode((c & 63) | 128);
			} else {
				output += String.fromCharCode((c >> 12) | 224);
				output += String.fromCharCode(((c >> 6) & 63) | 128);
				output += String.fromCharCode((c & 63) | 128);
			}
		}
		return output;
	};

	$.extend({
		md5 : function(string) {
			var x = Array();
			var k, AA, BB, CC, DD, a, b, c, d;
			var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
			var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
			var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
			var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
			string = uTF8Encode(string);
			x = convertToWordArray(string);
			a = 0x67452301;
			b = 0xEFCDAB89;
			c = 0x98BADCFE;
			d = 0x10325476;
			for (k = 0; k < x.length; k += 16) {
				AA = a;
				BB = b;
				CC = c;
				DD = d;
				a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
				d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
				c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
				b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
				a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
				d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
				c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
				b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
				a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
				d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
				c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
				b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
				a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
				d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
				c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
				b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
				a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
				d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
				c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
				b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
				a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
				d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
				c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
				b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
				a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
				d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
				c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
				b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
				a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
				d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
				c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
				b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
				a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
				d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
				c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
				b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
				a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
				d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
				c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
				b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
				a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
				d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
				c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
				b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
				a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
				d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
				c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
				b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
				a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
				d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
				c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
				b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
				a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
				d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
				c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
				b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
				a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
				d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
				c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
				b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
				a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
				d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
				c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
				b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
				a = addUnsigned(a, AA);
				b = addUnsigned(b, BB);
				c = addUnsigned(c, CC);
				d = addUnsigned(d, DD);
			}
			var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c)
					+ wordToHex(d);
			return tempValue.toLowerCase();
		}
	});
})(jQuery);

//禁用浏览器 默认右键菜单
// function click(e) {
// 	if (document.all) {
// 		if (event.button==2||event.button==3) {
// 			oncontextmenu='return false';
// 		}
// 	}
// 	if (document.layers) {
// 		if (e.which == 3) {
// 			oncontextmenu='return false';
// 		}
// 	}
// }
// if (document.layers) {
// 	document.captureEvents(Event.MOUSEDOWN);
// }
// document.onmousedown=click;
// document.oncontextmenu = new Function("return false;");

//禁用浏览器控制台
/*document.onkeydown =document.onkeyup = document.onkeypress=function(){
	if(window.event.keyCode == 123) {
		window.event.returnValue=false;
		return(false);
	}
};*/

//回车事件绑定
$(window).bind('keyup', function(event) {
    if (event.keyCode == "13") {
        var el = event.srcElement || event.target;
        if (el.classList.length == 0 || el.classList[0] != "pagination-num") {//非分页跳转
            //回车执行查询
            query(pageParam, true);
		}
    }
});

//获取用户个性化设置
function getGridHidden(gridId) {
	ajaxGetFun("userMenuHidden/getUserMenuHidden", {menuId: $("body").attr("menuId"), gridId: gridId}, function(bizData) {
		for (var i in bizData) {
			$("#"+ gridId).datagrid("hideColumn", bizData[i].gridCol);
		}
	}, null, "获取用户个性化设置");
}

//表格列可选
function selectColumnMenu(gridId) {
    var html = '<form id="formInfo"><table class="formTable">';
    var fields = $("#"+ gridId).datagrid("getColumnFields");
    var j=0;
    for (var i=0; i<fields.length; i++) {
        var field = fields[i];
        var col = $("#"+ gridId).datagrid("getColumnOption", field);
        if (col.field != "ck" && col.field != "id" && col.title != "操作") {
            if (j%2 == 0) {
                html +=
                    '<tr>' +
                    '   <td style="width: 150px; text-align: right">'+ col.title +'：</td>' +
                    '   <td style="width: 100px"><input type="checkbox" name="tableColWwitch" value="'+ col.field +'" class="lcs_check"'+ (col.hidden ? '' : ' checked="checked"') +' /></td>';
            } else if (j%2 == 1) {
                html +=
                    '   <td style="width: 150px; text-align: right">'+ col.title +'：</td>' +
                    '   <td style="width: 100px"><input type="checkbox" name="tableColWwitch" value="'+ col.field +'" class="lcs_check"'+ (col.hidden ? '' : ' checked="checked"') +' /></td>' +
                    '</tr>';
            }
            j++;
        }
    }
    if (j%2 == 0) {
        html +=
            '   <td style="width: 150px; text-align: right"></td>' +
            '   <td style="width: 100px"></td>' +
            '</tr>';
    }
    html +=  '</table></form>';
    var height = 70 + (j+1)/2*35;
    openHtml(false, 500, height, html, function () {
		$("input[name='tableColWwitch']").lc_switch();
	}, function(index, layero) {
		var hiddenCol = "";
		$.each($("input[name='tableColWwitch']:checkbox"),function() {
			if ($(this)[0].checked) {
				$("#"+ gridId).datagrid("showColumn", $(this).val());
			} else {
				$("#"+ gridId).datagrid("hideColumn", $(this).val());
				hiddenCol += ($(this).val() + ",");
			}
		});
		if (hiddenCol !== "") {
			hiddenCol = hiddenCol.substr(0, hiddenCol.length-1);
		}
		ajaxPostFun("userMenuHidden/saveUserMenuHidden", {menuId: $("body").attr("menuId"), gridId: gridId, gridCol: hiddenCol}, function(bizData) {
			for (var i in bizData) {
				$("#"+ gridId).datagrid("hideColumn", bizData[i].gridCol);
			}
		}, null, "保存用户个性化设置");
		layer.close(index);
	});
}

//查看附件
function showVoucher(voucherList) {
    var html =
        '<div class="layui-carousel" id="showVoucherDiv"><div carousel-item>';
    for (var i in voucherList) {
        html += '<div style="text-align: center"><img style="height: 100%; width: auto;" src="ossFile/downloadOssFile?ossFileId='+ voucherList[i].ossFileId +'"></div>'
    }
    html += '</div></div>';
    var width = window.innerWidth-20<600 ? window.innerWidth-20 : 600;
    var height = window.innerHeight-20<500 ? window.innerHeight-20 : 500;
    var lay = layer.open({
        type: 1,//Layer提供了5种层类型（0-信息框，默认；1-页面层；2-iframe层；3-加载层；4-tips层）
        title: "查看附件",//标题
        shadeClose: false,
        maxmin: false,
        shade: 0.3,//遮罩透明度
        area: [width +"px", height +"px"],
        content: html,
        success: function () {
            layui.use('carousel', function(){
                var carousel = layui.carousel;
                //建造实例
                carousel.render({
                    elem: "#showVoucherDiv",
                    width: "100%",
                    height: "100%",
                    arrow: "always",
                    autoplay: false
                });
            });
        },
        btn: ["确定", "下载"],
        btn1: function (index) {
            layer.close(index);
        },
        btn2: function () {
            for (let i=0; i<voucherList.length; i++) {
                setTimeout(function () {
                    var frame = document.createElement("iframe");
                    frame.src = "ossFile/downloadOssFile?ossFileId="+ voucherList[i].ossFileId;
                    document.body.appendChild(frame);
                    setTimeout(function () {
                        document.body.removeChild(frame);
                    }, 1000);
                }, 100);
            }
            return false;
        }
    });
    //重新给指定层设定width、top等 因为它们的小屏幕电脑的弹出层会出现滚动条，所以才用这个方法给加一个overflow: 'visible',属性
    layer.style(lay, {
        overflow: "visible"
    });
}

//获取单选框选中值
function getRadioValue(radioName) {
	var radio = $("input[name='"+ radioName +"']");
	for (var i in radio) {
		if (radio[i].checked === true) {
			return radio[i].value;
		}
	}
    return null;
}

//浏览器是否最小化
function isMinStatus() {
    var isMin = false;
    if (window.outerWidth != undefined) {
        isMin = window.outerWidth <= 160 && window.outerHeight <= 27;
    }
    else {
        isMin = window.screenTop < -30000 && window.screenLeft < -30000;
    }
    return isMin;
}

/**
 * @function 参数拼接
 * @param {object} obj 只支持非嵌套的对象
 * @returns {string}
 * @author 天心天地生 2020-1-15
 */
function appendGetParams(obj) {
    let result = '';
    let item;
    for (item in obj) {
        if (obj[item] && String(obj[item])) {
            result += `&${item}=${obj[item]}`;
        }
    }
    if (result) {
        result = '?' + result.slice(1);
    }
    return result;
}